/**
 * GM工具 - 通用工具函数
 */

// 保存用户会话信息
function saveUserSession(username) {
    try {
        localStorage.setItem('gm_user', username);
        localStorage.setItem('gm_login_time', new Date().getTime());
        return true;
    } catch (error) {
        console.error('保存会话失败:', error);
        return false;
    }
}

// 清除用户会话
function clearUserSession() {
    try {
        localStorage.removeItem('gm_user');
        localStorage.removeItem('gm_login_time');
        return true;
    } catch (error) {
        console.error('清除会话失败:', error);
        return false;
    }
}

// 获取当前用户信息
function getCurrentUser() {
    try {
        const username = localStorage.getItem('gm_user');
        const loginTime = localStorage.getItem('gm_login_time');
        
        if (username && loginTime) {
            return {
                username: username,
                loginTime: parseInt(loginTime)
            };
        }
        return null;
    } catch (error) {
        console.error('获取用户信息失败:', error);
        return null;
    }
}

// 检查用户是否已登录
function isLoggedIn() {
    const user = getCurrentUser();
    return user !== null;
}

// 验证会话是否有效（例如检查登录时间是否超时）
function isSessionValid(timeoutMinutes = 30) {
    const user = getCurrentUser();
    if (!user) return false;
    
    const currentTime = new Date().getTime();
    const loginTime = user.loginTime;
    const timeoutMs = timeoutMinutes * 60 * 1000;
    
    return (currentTime - loginTime) < timeoutMs;
}

// 重定向到登录页面
function redirectToLogin() {
    window.location.href = 'login.html';
}

// 重定向到主页
function redirectToHome() {
    window.location.href = 'index.html';
}

// 验证用户输入
function validateInput(value, type = 'text') {
    if (!value) return false;
    
    switch (type) {
        case 'username':
            // 用户名验证：3-20个字符，支持字母、数字、下划线
            return /^[a-zA-Z0-9_]{3,20}$/.test(value);
        case 'password':
            // 密码验证：至少6个字符
            return value.length >= 6;
        case 'email':
            // 邮箱验证
            return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
        default:
            return value.trim().length > 0;
    }
}

// 显示消息提示
function showMessage(message, type = 'info') {
    // 创建消息元素
    const msgElement = document.createElement('div');
    msgElement.className = `gm-message gm-message-${type}`;
    msgElement.textContent = message;
    
    // 添加样式
    msgElement.style.position = 'fixed';
    msgElement.style.top = '20px';
    msgElement.style.right = '20px';
    msgElement.style.padding = '15px 20px';
    msgElement.style.borderRadius = '4px';
    msgElement.style.color = 'white';
    msgElement.style.zIndex = '10000';
    msgElement.style.boxShadow = '0 2px 10px rgba(0,0,0,0.2)';
    msgElement.style.transition = 'opacity 0.3s ease';
    
    // 设置背景色根据类型
    switch (type) {
        case 'success':
            msgElement.style.backgroundColor = '#4CAF50';
            break;
        case 'error':
            msgElement.style.backgroundColor = '#f44336';
            break;
        case 'warning':
            msgElement.style.backgroundColor = '#ff9800';
            break;
        default:
            msgElement.style.backgroundColor = '#2196F3';
    }
    
    // 添加到页面
    document.body.appendChild(msgElement);
    
    // 自动消失
    setTimeout(() => {
        msgElement.style.opacity = '0';
        setTimeout(() => {
            document.body.removeChild(msgElement);
        }, 300);
    }, 3000);
}

// 模拟API请求
async function mockApiRequest(endpoint, method = 'GET', data = null) {
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 300 + Math.random() * 700));
    
    // 根据端点返回模拟数据
    if (endpoint === '/api/login') {
        if (method === 'POST' && data && data.username === 'admin' && data.password === 'admin123') {
            return {
                success: true,
                data: {
                    username: 'admin',
                    role: 'admin',
                    permissions: ['player_manage', 'config_manage', 'stats_view', 'logs_view']
                }
            };
        } else {
            return {
                success: false,
                error: '用户名或密码错误'
            };
        }
    }
    
    return {
        success: false,
        error: '未知端点'
    };
}